DICTIONARY
    //
    // For use with decompressed 1.0 MM only!
    //
    VROM_CODE             0x00B3C000           // start of code within rom
    TABLE_OBJECT          0x11CC80             // start of object table within code
    VROM_OBJ              O_0x11               // object to overwrite
    VROM_ARMS_HOOK        0xD3B220

    HIERARCHY_CODE        0x11A350             // Relative to the start of code;
                                               // Link's hierarchy pointer will
                                               // be written at this address

    SEG                   0x06000000           // ram segment

    OBJ_CHILD             0x0011               // object_link_child object number

    // Hierarchy
    DL_WAIST                    0x00BDB0        "Limb 1" // this is the name zzconvert automatically uses
    DL_RTHIGH                   0x00B360        "Limb 3"
    DL_RSHIN                    0x00B538        "Limb 4"
    DL_RFOOT                    0x00B778        "Limb 5"
    DL_LTHIGH                   0x00B888        "Limb 6"
    DL_LSHIN                    0x00BA60        "Limb 7"
    DL_LFOOT                    0x00BCA0        "Limb 8"
    DL_HEAD                     0x00C3E8        "Limb 10"
    DL_HAT                      0x00CAA8        "Limb 11"
    DL_COLLAR                   0x00BF88        "Limb 12"
    DL_LSHOULDER                0x00D1B0        "Limb 13"
    DL_LFOREARM                 0x00E1C8        "Limb 14"
    DL_RSHOULDER                0x00CCE0        "Limb 16"
    DL_RFOREARM                 0x00CF08        "Limb 17"
    DL_TORSO                    0x00C048        "Limb 20"

    // Hands
    DL_LHAND                    0x00F1D8        "Limb 15"
    DL_LFIST                    0x00F548        "Fist.L"
    DL_LHAND_BOTTLE             0x01DFA8        "Bottle.Hand.L"
    DL_RHAND                    0x00F998        "Limb 18"
    DL_RFIST                    0x00FD08        "Fist.R"

    // Equipment
    DL_SHIELD_MIRROR_FACE       0x015F98		"Shield.2.Face"
    DL_SHIELD_MIRROR            0x016480        "Shield.2"
    DL_BLADE_GFSWORD            0x016898        "Sword.4"
    DL_SHEATH_GILDED            0x016B80        "Sheath.3"
    DL_HILT_GILDED              0x017058        "Hilt.3"
    DL_BLADE_GILDED             0x017310        "Blade.3"
    DL_SHEATH_RAZOR             0x017338        "Sheath.2"
    DL_SHIELD_HERO              0x017458        "Shield.1"
    DL_SHEATH_KOKIRI            0x017700        "Sheath.1"
    DL_HOOKSHOT                 0x017858        "Hookshot"
    DL_BOW                      0x0181C8        "Bow"
    DL_HOOKSHOT_SPIKE           0x01D960        "Hookshot.Spike"
    DL_OCARINA_TIME             0x010448        "Ocarina.2"

    // First-Person
    DL_FPS_RIGHT_ARM            0x017EC0        "FPS.Forearm.R"

    // Misc
    DL_BOW_STRING               0x017818         "Bow.String"
    
    // External dependencies (gameplay_keep)
    GK_HILT_KOKIRI              0x040021A8      // Kokiri Sword Handle
    GK_HILT_RAZOR               0x04001D00      // Razor Sword Handle
    GK_BLADE_KOKIRI             0x040028C0      // Kokiri Sword Blade
    GK_BLADE_RAZOR              0x04002168      // Razor Sword Blade
END

// Matrix function parameters:
// Matrix( XR, YR, ZR, XT, YT, ZT, XS, YS, ZS );

OBJECT POOL=0x5000,0x800 
  LUT_ZZ_MODLOADER:
	HexString(4D 4F 44 4C 4F 41 44 45 52 36 34 04 06 00 54 20);
	
				
      MATRIX_SHIELD_MIRROR_BACK: // Mirror Shield Matrix
          Matrix( 0, 0, 182, 552, 0, -50, 1, 1, 1 );

      MATRIX_SHIELD_HERO_BACK: // Hero Shield Matrix
          Matrix( 0, 0, 182, 552, 0, 0, 1, 1, 1 );

      MATRIX_SWORD_BACK_A: // Kokiri / Gilded Hilt Matrix
          Matrix( 0, 0, 0, -578, -221, -32, 1, 1, 1 );

      MATRIX_SWORD_BACK_B: // Razor Hilt Matrix
          Matrix( 0, 0, 0, -480, -240, -14, 1, 1, 1 );
	
		LUT_DL_WAIST:
			CallList( DL_WAIST );

		LUT_DL_RTHIGH:
			CallList( DL_RTHIGH );

		LUT_DL_RSHIN:
			CallList( DL_RSHIN );

		LUT_DL_RFOOT:
			CallList( DL_RFOOT );

		LUT_DL_LTHIGH:
			CallList( DL_LTHIGH );

		LUT_DL_LSHIN:
			CallList( DL_LSHIN );

		LUT_DL_LFOOT:
			CallList( DL_LFOOT );

		LUT_DL_HEAD:
			CallList( DL_HEAD );

		LUT_DL_HAT:
			CallList( DL_HAT );

		LUT_DL_COLLAR:
			CallList( DL_COLLAR );

		LUT_DL_LSHOULDER:
			CallList( DL_LSHOULDER );

		LUT_DL_LFOREARM:
			CallList( DL_LFOREARM );

		LUT_DL_RSHOULDER:
			CallList( DL_RSHOULDER );

		LUT_DL_RFOREARM:
			CallList( DL_RFOREARM );

		LUT_DL_TORSO:
			CallList( DL_TORSO );

		LUT_DL_LHAND:
			CallList( DL_LHAND );

		LUT_DL_LFIST:
			CallList( DL_LFIST );
			
		LUT_DL_LHAND_BOTTLE:
			CallList( DL_LHAND_BOTTLE );

		LUT_DL_RHAND:
			CallList( DL_RHAND );
			
		LUT_DL_RFIST:
			CallList( DL_RFIST );
			
		LUT_DL_SHIELD_MIRROR_FACE:
			CallList( DL_SHIELD_MIRROR_FACE );
		
		LUT_DL_SHIELD_MIRROR:
			CallList( DL_SHIELD_MIRROR );
			
		LUT_DL_BLADE_GFSWORD:
			CallList( DL_BLADE_GFSWORD );
			
		LUT_DL_SHEATH_GILDED:
			CallList( DL_SHEATH_GILDED );
			
		LUT_DL_HILT_GILDED:
			CallList( DL_HILT_GILDED );
			
		LUT_DL_BLADE_GILDED:
			CallList( DL_BLADE_GILDED );
			
		LUT_DL_SHEATH_RAZOR:
			CallList( DL_SHEATH_RAZOR );
			
		LUT_DL_SHIELD_HERO:
			CallList( DL_SHIELD_HERO );
			
		LUT_DL_SHEATH_KOKIRI:
			CallList( DL_SHEATH_KOKIRI );
			
		LUT_DL_HOOKSHOT:
			CallList( DL_HOOKSHOT );
			
		LUT_DL_BOW:
			CallList( DL_BOW );
			
		LUT_DL_HOOKSHOT_SPIKE:
			CallList( DL_HOOKSHOT_SPIKE );
		
		LUT_DL_OCARINA_TIME:
			CallList( DL_OCARINA_TIME );
			
		LUT_DL_FPS_RIGHT_ARM:
			CallList( DL_FPS_RIGHT_ARM );
			
		LUT_DL_BOW_STRING:
			CallList( DL_BOW_STRING );

      DL_SHIELD_HERO_BACK: // Rotated Hero's Shield
          CallMatrix( MATRIX_SHIELD_HERO_BACK );
          CallList( LUT_DL_SHIELD_HERO );
	  LUT_DL_SHIELD_HERO_BACK:
		  CallList( DL_SHIELD_HERO_BACK );

      DL_SHIELD_MIRROR_COMBINED: // Combined Face and Body
          CallList(LUT_DL_SHIELD_MIRROR);
          CallList(LUT_DL_SHIELD_MIRROR_FACE);
		  
     LUT_DL_SHIELD_MIRROR_COMBINED:
		  CallList( DL_SHIELD_MIRROR_COMBINED );
		  
     DL_SHIELD_MIRROR_BACK: // Rotated Mirror Shield
          CallMatrix( MATRIX_SHIELD_MIRROR_BACK );
          CallList( DL_SHIELD_MIRROR_COMBINED );
		 
	 LUT_DL_SHIELD_MIRROR_BACK:
		  CallList( DL_SHIELD_MIRROR_BACK );

     DL_SWORD_KOKIRI_SHEATHED: // Sheathed Kokiri Sword
          CallMatrix( MATRIX_SWORD_BACK_A );
          CallList( GK_HILT_KOKIRI );
          PopMatrix( 1 );
          CallList( LUT_DL_SHEATH_KOKIRI );
		  
	LUT_DL_SWORD_KOKIRI_SHEATHED:
		  CallList( DL_SWORD_KOKIRI_SHEATHED );

    DL_SWORD_RAZOR_SHEATHED: // Sheathed Razor Sword
          CallMatrix( MATRIX_SWORD_BACK_B );
          CallList( GK_HILT_RAZOR );
          PopMatrix( 1 );
          CallList( LUT_DL_SHEATH_RAZOR );
		  
	LUT_DL_SWORD_RAZOR_SHEATHED:
		CallList( DL_SWORD_RAZOR_SHEATHED );

    DL_SWORD_GILDED_SHEATHED: // Sheathed Gilded Sword
          CallMatrix( MATRIX_SWORD_BACK_A );
          CallList( LUT_DL_HILT_GILDED );
          PopMatrix( 1 );
          CallList( LUT_DL_SHEATH_GILDED );
		  
	LUT_DL_SWORD_GILDED_SHEATHED:
		CallList( DL_SWORD_GILDED_SHEATHED );

      DL_LFIST_KOKIRI_SWORD: // Left Fist + Kokiri Sword
        CallList( GK_HILT_KOKIRI );
        CallList( GK_BLADE_KOKIRI );
        CallList( LUT_DL_LFIST );
		
	LUT_DL_LFIST_KOKIRI_SWORD:
		CallList( DL_LFIST_KOKIRI_SWORD );

      DL_LFIST_RAZOR_SWORD: // Left Fist + Razor Sword
        CallList( GK_HILT_RAZOR );
        CallList( GK_BLADE_RAZOR );
        CallList( LUT_DL_LFIST );
		
	LUT_DL_LFIST_RAZOR_SWORD:
		CallList( DL_LFIST_RAZOR_SWORD );

      DL_LFIST_GILDED_SWORD: // Left Fist + Gilded Sword
        CallList( LUT_DL_HILT_GILDED );
        CallList( LUT_DL_BLADE_GILDED );
        CallList( LUT_DL_LFIST );
		
	LUT_DL_LFIST_GILDED_SWORD:
		CallList(DL_LFIST_GILDED_SWORD);

    DL_LFIST_GFSWORD_SWORD: // Left Fist + Great Fairy's Sword
        CallList( LUT_DL_BLADE_GFSWORD );
        CallList( LUT_DL_LFIST );
		
	LUT_DL_LFIST_GFSWORD_SWORD:
		CallList(DL_LFIST_GFSWORD_SWORD);
		
	LUT_DL_BLADE_GFSWORD:
		CallList(DL_LFIST_GFSWORD_SWORD);

      DL_RFIST_SHIELD_HERO: // Right Fist + Hero's Shield
            CallList( LUT_DL_SHIELD_HERO );
            CallList( LUT_DL_RFIST );
			
	LUT_DL_RFIST_SHIELD_HERO:
		CallList(DL_RFIST_SHIELD_HERO);

      DL_RFIST_SHIELD_MIRROR: // Right Fist + Mirror Shield
            CallList( LUT_DL_SHIELD_MIRROR );
            CallList( LUT_DL_RFIST );
			
	LUT_DL_RFIST_SHIELD_MIRROR:
		CallList(DL_RFIST_SHIELD_MIRROR);

      DL_RFIST_HOOKSHOT: // Right Fist + Hookshot
            CallList( LUT_DL_HOOKSHOT );
            CallList( LUT_DL_RFIST );
			
	LUT_DL_RFIST_HOOKSHOT:
		CallList(DL_RFIST_HOOKSHOT);

      DL_RFIST_BOW: // Right Fist + Bow
            CallList( LUT_DL_BOW );
            CallList( LUT_DL_RFIST );
			
	LUT_DL_RFIST_BOW:
		CallList(DL_RFIST_BOW);

      DL_RHAND_OCARINA_TIME:
        CallList( LUT_DL_OCARINA_TIME );
        CallList( LUT_DL_RHAND );
		
	LUT_DL_RHAND_OCARINA_TIME:
		CallList(DL_RHAND_OCARINA_TIME)

      DL_FPS_RARM_HOOKSHOT:
            CallList( LUT_DL_HOOKSHOT );
            CallList( LUT_DL_FPS_RIGHT_ARM );
			
	LUT_DL_FPS_RARM_HOOKSHOT:
		CallList(DL_FPS_RARM_HOOKSHOT);

      DL_FPS_RARM_BOW:
            CallList( LUT_DL_BOW );
            CallList( LUT_DL_FPS_RIGHT_ARM );
	
	LUT_DL_FPS_RARM_BOW:
		CallList(DL_FPS_RARM_BOW);
			
      DL_DF_COMMAND: // just an ordinary DF command
          HexString(DF 00 00 00 00 00 00 00);
		  
	LUT_DL_DF_COMMAND:
		CallList(DL_DF_COMMAND);
END

REPOINT

      GoTo(VROM_CODE+0x11A55C);
      Write32(LUT_DL_WAIST);                   // Waist
      Write32(LUT_DL_WAIST);
      Write32(LUT_DL_RFIST_SHIELD_HERO);       // Right Fist + Hero's Shield
      Write32(LUT_DL_RFIST_SHIELD_HERO);
      Write32(LUT_DL_RFIST_SHIELD_MIRROR);     // Right Fist + Mirror Shield
      Write32(LUT_DL_RFIST_SHIELD_MIRROR);
      GoTo(VROM_CODE+0x11A5EC);
      Write32(LUT_DL_SHIELD_HERO_BACK);        // Rotated Hero's Shield
      Write32(LUT_DL_SHIELD_HERO_BACK);
      Write32(LUT_DL_SHIELD_MIRROR_BACK);      // Rotated Mirror Shield
      Write32(LUT_DL_SHIELD_MIRROR_BACK);
      Write32(LUT_DL_SWORD_KOKIRI_SHEATHED);   // Sheathed Kokiri Sword
      Write32(LUT_DL_SWORD_KOKIRI_SHEATHED);
      Write32(LUT_DL_SWORD_RAZOR_SHEATHED);   // Sheathed Razor Sword
      Write32(LUT_DL_SWORD_RAZOR_SHEATHED);
      Write32(LUT_DL_SWORD_GILDED_SHEATHED);   // Sheathed Gilded Sword
      Write32(LUT_DL_SWORD_GILDED_SHEATHED);
      Write32(LUT_DL_SHEATH_KOKIRI);           // Kokiri Sword Sheath
      Write32(LUT_DL_SHEATH_KOKIRI);
      Write32(LUT_DL_SHEATH_RAZOR);            // Razor Sword Sheath
      Write32(LUT_DL_SHEATH_RAZOR);
      Write32(LUT_DL_SHEATH_GILDED);           // Gilded Sword Sheath
      Write32(LUT_DL_SHEATH_GILDED);
      GoTo(VROM_CODE+0x11A64C);                    // Left Fist + Great Fairy's Sword
      Write32(LUT_DL_LFIST_GFSWORD_SWORD);
      Write32(LUT_DL_LFIST_GFSWORD_SWORD);
      GoTo(VROM_CODE+0x11A674);                    // Left Hand
      Write32(LUT_DL_LHAND);
      Write32(LUT_DL_LHAND);
      GoTo(VROM_CODE+0x11A69C);                    // Left Fist
      Write32(LUT_DL_LFIST);
      Write32(LUT_DL_LFIST);
      GoTo(VROM_CODE+0x11A6CC);                    // Left Fist + Kokiri Sword
      Write32(LUT_DL_LFIST_KOKIRI_SWORD);
      Write32(LUT_DL_LFIST_KOKIRI_SWORD);
      GoTo(VROM_CODE+0x11A6D4);                    // Left Fist + Razor Sword
      Write32(LUT_DL_LFIST_RAZOR_SWORD);
      Write32(LUT_DL_LFIST_RAZOR_SWORD);
      GoTo(VROM_CODE+0x11A6DC);                    // Left Fist + Gilded Sword
      Write32(LUT_DL_LFIST_GILDED_SWORD);
      Write32(LUT_DL_LFIST_GILDED_SWORD);
      GoTo(VROM_CODE+0x11A704);                    // Right Hand
      Write32(LUT_DL_RHAND);
      Write32(LUT_DL_RHAND);
      GoTo(VROM_CODE+0x11A72C);                    // Right Fist
      Write32(LUT_DL_RFIST);
      Write32(LUT_DL_RFIST);
      GoTo(VROM_CODE+0x11A754);                    // Right Fist + Hero's Bow
      Write32(LUT_DL_RFIST_BOW);
      Write32(LUT_DL_RFIST_BOW);
      GoTo(VROM_CODE+0x11A77C);                    // Right Hand + Ocarina of Time
      Write32(LUT_DL_RHAND_OCARINA_TIME);
      Write32(LUT_DL_RHAND_OCARINA_TIME);
      GoTo(VROM_CODE+0x11A7A4);                    // Right Fist + Hookshot
      Write32(LUT_DL_RFIST_HOOKSHOT);
      Write32(LUT_DL_RFIST_HOOKSHOT);
      GoTo(VROM_CODE+0x11A7CC);                    // Outstreched Left Hand (for holding bottles)
      Write32(LUT_DL_LHAND_BOTTLE);
      Write32(LUT_DL_LHAND_BOTTLE);
      GoTo(VROM_CODE+0x11A7F8);                    // Left Fist
      Write32(LUT_DL_LFIST);
      GoTo(VROM_CODE+0x11A80C);                    // Right Shoulder
      Write32(LUT_DL_RSHOULDER);
      GoTo(VROM_CODE+0X11A820);                    // FPS Right Arm + Hero's Bow
      Write32(LUT_DL_FPS_RARM_BOW);
      GoTo(VROM_CODE+0x11A834);                    // FPS Right Arm + Hookshot
      Write32(LUT_DL_FPS_RARM_HOOKSHOT);
      GoTo(VROM_CODE+0x11B2D4);                    // Hero's Bow String
      Write32(LUT_DL_BOW_STRING);
      // Hookshot Spike
      GoTo(VROM_ARMS_HOOK+0xA2E);
      Hi32(LUT_DL_HOOKSHOT_SPIKE);
      GoTo(VROM_ARMS_HOOK+0xA32);
      Lo32(LUT_DL_HOOKSHOT_SPIKE);
	  
	  // FPS Glitch Fix (Thanks Fkualol!)
      GoTo(0x00C567E4);
      Write32(LUT_DL_DF_COMMAND);

      // Swordless fix    (Thanks Nick!)
      GoTo(0x00C565E4);
      Write32(LUT_DL_DF_COMMAND);                   // Sheathed Sword + Shield
      GoTo(0x00C565BC);
      Write32(LUT_DL_DF_COMMAND);                   // Sheathed Sword
	  
	  // Unknown Pointers (?)
      GoTo(VROM_CODE+0x11A594);
      Write32(LUT_DL_DF_COMMAND);
      GoTo(VROM_CODE+0x11A598);
      Write32(LUT_DL_DF_COMMAND);
      GoTo(VROM_CODE+0x11A5C0);
      Write32(LUT_DL_DF_COMMAND);
      GoTo(VROM_CODE+0x11A5E8);
      Write32(LUT_DL_DF_COMMAND);
END